//package com.ssd.emq;
//
//import lombok.extern.slf4j.Slf4j;
//import org.eclipse.paho.client.mqttv3.*;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//
///**
// * mqtt回调
// */
//@Component
//@Slf4j
//public class MqttCallback implements MqttCallbackExtended {
//    //需要订阅的topic配置
//    @Value("${mqtt.consumer.consumerTopics}")
//    private List<String> consumerTopics;
//
//    //消息处理对象
//    @Autowired
//    private MqttService mqttService;
//
//    /**
//     * 连接丢失
//     * @param throwable
//     */
//    @Override
//    public void connectionLost(Throwable throwable) {
//        //1.连接丢失时记录错误
//        log.error("emq error.",throwable);
//    }
//
//    /**
//     * 消息到达时处理消息
//     * @param topic
//     * @param message
//     * @throws Exception
//     */
//    @Override
//    public void messageArrived(String topic, MqttMessage message) throws Exception {
//        log.info( "topic:"+topic+"  message:"+ new String(message.getPayload())   );
//        //处理消息
//        mqttService.processMessage(topic, message);
//        //处理成功后确认消息
//        mqttClient.messageArrivedComplete(message.getId(),message.getQos());
//    }
//
//    /**
//     * 消息发送完成
//     * @param iMqttDeliveryToken
//     */
//    @Override
//    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
//        //消息发送完成时记录日志
//        log.info("deliveryComplete---------" + iMqttDeliveryToken.isComplete());
//    }
//
//
//    /**
//     * 连接成功后订阅主题
//     * @param b
//     * @param s
//     */
//    @Override
//    public void connectComplete(boolean b, String s) {
//        //和EMQ连接成功后根据配置自动订阅topic
//        if(consumerTopics != null && consumerTopics.size() > 0){
//            consumerTopics.forEach(t->{
//                try {
//                        log.info(">>>>>>>>>>>>>>subscribe topic:"+t);
//                        mqttClient.subscribe(t, 2);
//                    } catch (MqttException e) {
//                        log.error("emq connect error", e);
//                    }
//            });
//        }
//    }
//
//    private MqttClient mqttClient;
//    public void setMqttClient(MqttClient mqttClient) {
//        this.mqttClient = mqttClient;
//    }
//}